package com.zjun.demo.experimentaldemo.signal_strength;

import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;

public class SignalStrengthListener {

    private TelephonyManager telephonyManager;

    private PhoneStateListener phoneStateListener;

    public SignalStrengthListener(Context context) {
        telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        phoneStateListener = new PhoneStateListener() {
            @Override
            public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                super.onSignalStrengthsChanged(signalStrength);
                int asu = signalStrength.getGsmSignalStrength(); // 对于GSM信号强度
                // 对于CDMA信号强度，可以使用
                // int asu = signalStrength.getCdmaDbm();
                // int evdoDbm = signalStrength.getEvdoDbm();
                // int evdoSnr = signalStrength.getEvdoSnr();
                // int lteDbm = signalStrength.getLteSignalStrength();
                // int lteRsrp = signalStrength.getLteRsrp();
                // 注意：ASU（Access Signal Unit）是一个0到31之间的值，其中31代表最好的信号，0代表最差的信号。
                // 根据实际情况转换为dBm或其他单位可能需要一些计算。

                // 处理信号强度，例如更新UI或者存储数据
            }
        };
    }

    public void startListening() {
        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
    }

    public void stopListening() {
        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
    }
}